﻿// -------------------------------------------------------------------------
//    @FileName         :    NFHeroAttrCalcFactory.h
//    @Author           :    Gao.Yi
//    @Date             :    2025-09-30
//    @Email			:    445267987@qq.com
//    @Module           :    NFHeroAttrCalcFactory
//    @Desc             :
//
// -------------------------------------------------------------------------

#pragma once

#include "NFComm/NFObjCommon/NFObject.h"
struct RoleCEData;
struct HeroOne;
class NFIHeroAttrCalc;
class NFPlayer;

class NFHeroAttrCalcFactory
{
public:
    static NFIHeroAttrCalc* Create(HeroOne* pHero, NFPlayer* pPlayer, int64_t llLevel, int64_t llExpSum, RoleCEData* pCEData);
    static int Calc(HeroOne* pHero, NFPlayer* pPlayer, int64_t llLevel = 1, int64_t llExpSum = 0, RoleCEData* pCEData = nullptr);

    static int Recalc(HeroOne* pHero, NFPlayer* pPlayer, bool bEvent = true);
    static int UpdateHP(HeroOne* pHero, NFPlayer* pPlayer, int64_t llBeforeVal);
    static int UpdateMP(HeroOne* pHero, NFPlayer* pPlayer, int64_t llBeforeVal);
};
